package br.com.sgi.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.sgi.dao.AcessoDao;
import br.com.sgi.model.Acesso;
import br.com.sgi.service.AcessoService;
@Service("acessoService")
public class AcessoServiceImpl implements AcessoService {

	@Autowired
	private AcessoDao acessoDao;
	

	@Override
	public Acesso buscarAcessoPorPerfil(String authority, String funcionalidade) {
		 Map<String, Object>  params = new java.util.HashMap<String, Object>();
		 StringBuffer sql = new StringBuffer();
		 params.put("authority", authority)	;
			sql.append("\n SELECT ac FROM Acesso ac");
			sql.append( "\n inner join ac.authority autho ");
			sql.append( "\n inner join ac.funcionalidade f ");
			sql.append( "\n WHERE f.sistema.coSeqSistema = :coSistema ");
			sql.append( "\n and autho.authority =:authority ");
			sql.append( "\n and f.nome =:funcionalidade ");
			if(funcionalidade != null && !funcionalidade.isEmpty()){
				 params.put("funcionalidade", funcionalidade)	;
			}else
			 	params.put("funcionalidade", "menu")	;
		
		List<Acesso> acessos = acessoDao.findByNativeQuery(sql.toString(), params);
		if(acessos.isEmpty())
			return null;
		return  acessos.get(0);
	}


	@Override
	public void salvar(Acesso acesso) {
		acessoDao.save(acesso);
		
	}


	@Override
	public void update(Acesso acesso) {
		acessoDao.update(acesso);
		
	}


	@Override
	public List<Acesso> buscarTodosAcessos() {
		
		return acessoDao.findAll();
	}


}
